8027a9c8: 27 bd ff f8  ADDIU sp, sp, 0xfffffff8 (-8)

8027a9cc: 30 84 00 ff  ANDI a0, a0, 0xff (255)

8027a9d0: af a0 00 04  SW r0, sp, 0x4 (4)

8027a9d4: 3c 0e 80 33  LUI t6, 0x8033 (32819)
8027a9d8: 8d ce dd cc  LW t6, t6, 0xffffddcc (-8756)
8027a9dc: 8d cf 00 14  LW t7, t6, 0x14 (20)
8027a9e0: 11 e0 00 0b  BEQ r0, t7, 0x8027aa10 (pc + 0x2c)   if (!([sp + 0x4] = (*(0x8032ddcc))->warplinks_head)) goto 0x8027aa10
8027a9e4: af af 00 04  SW t7, sp, 0x4 (4)

8027a9e8: 8f b8 00 04  LW t8, sp, 0x4 (4)
8027a9ec: 93 19 00 00  LBU t9, t8, 0x0 (0)
8027a9f0: 17 24 00 03  BNE t9, a0, 0x8027aa00 (pc + 0xc)    if ([sp + 0x4]->id != id) goto 0x8027aa00
8027a9f4: 00 00 00 00  NOP

8027a9f8: 10 00 00 05  BEQ r0, r0, 0x8027aa10 (pc + 0x14)   goto 0x8027aa10
8027a9fc: 00 00 00 00  NOP

8027aa00: 8f a8 00 04  LW t0, sp, 0x4 (4)
8027aa04: 8d 09 00 08  LW t1, t0, 0x8 (8)
8027aa08: 15 20 ff f7  BNE t1, r0, 0x8027a9e8 (pc - 0x24)   if ([sp + 0x4] = [sp + 0x4]->next) goto 0x8027a9e8
8027aa0c: af a9 00 04  SW t1, sp, 0x4 (4)

8027aa10: 10 00 00 03  BEQ r0, r0, 0x8027aa20 (pc + 0xc)    return [sp + 0x4]
8027aa14: 8f a2 00 04  LW v0, sp, 0x4 (4)

8027aa18: 10 00 00 01  BEQ r0, r0, 0x8027aa20 (pc + 0x4)
8027aa1c: 00 00 00 00  NOP
8027aa20: 03 e0 00 08  JR ra
8027aa24: 27 bd 00 08  ADDIU sp, sp, 0x8 (8)


struct struct_area *current_area;

struct struct_warplink {
    unsigned char id;
    unsigned char dest_level;
    unsigned char dest_area;
    unsigned char dest_id;

    uint32 unknown;
    struct struct_warplink *next;
};

struct struct_warplink * find_warplink(unsigned char id)
{
    struct struct_warplink *p;

    if (p = current_area->warplinks_head) {
        do {
            if (p->id == id) {
                break;
            }
        } while (p = p->next);

    }

    return p;
}





